package models

import (
	"shop-microservices/basic/inits"
	"time"
)

type Advertisement struct {
	Id        uint32    `gorm:"column:id;type:int UNSIGNED;primaryKey;not null;" json:"id"`
	Title     string    `gorm:"column:title;type:varchar(255);comment:广告标题;not null;" json:"title"`             // 广告标题
	Content   string    `gorm:"column:content;type:varchar(255);comment:广告内容;not null;" json:"content"`         // 广告内容
	ImgUrl    string    `gorm:"column:img_url;type:varchar(255);comment:图片url;not null;" json:"img_url"`        // 图片url
	LinkUrl   string    `gorm:"column:link_url;type:varchar(255);comment:广告跳转链接;not null;" json:"link_url"`     // 广告跳转链接
	StartTime time.Time `gorm:"column:start_time;type:datetime;comment:开始展示时间;not null;" json:"start_time"`     // 开始展示时间
	EndTime   time.Time `gorm:"column:end_time;type:datetime;comment:结束展示时间;not null;" json:"end_time"`         // 结束展示时间
	MaxShow   uint32    `gorm:"column:max_show;type:int UNSIGNED;comment:单个用户最大展示次数;not null;" json:"max_show"` // 单个用户最大展示次数
	CreateAt  time.Time `gorm:"column:create_at;type:datetime;not null;default:CURRENT_TIMESTAMP;" json:"create_at"`
	UpdateAt  time.Time `gorm:"column:update_at;type:datetime;not null;default:CURRENT_TIMESTAMP;" json:"update_at"`
	DeleteAt  time.Time `gorm:"column:delete_at;type:datetime;default:NULL;" json:"delete_at"`
}

func (a *Advertisement) TableName() string {
	return "advertisement"
}

// 获取可展示的广告
func (a *Advertisement) GetAdvertisementList() (list []Advertisement, err error) {
	err = inits.DB.Where("start_time < ? and  end_time > ?", time.Now(), time.Now()).Find(&list).Error
	return
}
